package outline;

import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JDialog;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.tools.Diagnostic;

/*JDialog
JDialog는 대화상자를 나타냄
이것을 이용해서 메세지를 표현하거나 사용자 입력을 받을수 있음
대화상자는 modal 또는 modaless 일수 있음

modal : 대화상자가 표시된 후 다른 Frame의 사용자 입력을 차단함
	즉, modal상자를 닫기 전까지는 다른 Frame 을 선택하기 어려움
modaless : 사용자의 입력을 막지 않는 대화상자
	특정Frame을 선택하더라도 다른 Frame 이 화면에서 사라지지않음

Frame의 일부로 대화상자를 제어하려면 JDialog 생성자에 JFrame 객체를 매개변수로 넘겨야함
이런경우 Frame이 파괴되면 대화상도 같이 닫힘

ModalityType
대화상자의 모달속성을 좀 더 세밀하게 제어함
모달 대화상자를 표시할때 사용자의 입력을 어느 범위까지 거부blocking 할것인지 여부지정

modaless : 단순히 부모Frame 의 제어를 받는 대화상자.사용자의 입력을 받음
DOCUMENT_MODAL : 모달 대화상자 단순히 현재 창만을 대상으로 사용자 입력을 거부함
APPLICATION_MODAL: 모달 대화상자 광범위하게 모든 창을 대상으로 사용자 입력을 거부함
*/

public class J11_HelloSwingDialog extends JFrame {

	private JPanel contentPane;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					J11_HelloSwingDialog frame = new J11_HelloSwingDialog();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public J11_HelloSwingDialog() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnFilef = new JMenu("File (F)");
		menuBar.add(mnFilef);
		
		JMenuItem mntmExitx = new JMenuItem("Exit (X)");
		mnFilef.add(mntmExitx);
		
		JMenu mnHelph = new JMenu("Help(H)");
		menuBar.add(mnHelph);
		
		JMenuItem mntmInfoi = new JMenuItem("Info(I)");
		mntmInfoi.addActionListener(new MenuActionListener_1(this));
		mnHelph.add(mntmInfoi);
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);
	}

}

class MenuActionListener_1 implements ActionListener
{
	private JFrame p=null;
	
	public MenuActionListener_1() {
		// TODO Auto-generated constructor stub
	}
	
	public MenuActionListener_1(JFrame p) {
	// TODO Auto-generated constructor stub
		this.p = p;
		
		
}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		new SwingDialog(p);
		JDialog d=new JDialog(p,Dialog.ModalityType.MODELESS);
//		JDialog d1=new JDialog(null,Dialog.ModalityType.DOCUMENT_MODAL);
//		JDialog d2=new JDialog(null,Dialog.ModalityType.APPLICATION_MODAL);
		d.setSize(250,250);d.setVisible(true);
//		d1.setSize(250,250);d1.setVisible(true);
//		d2.setSize(250,250);d2.setVisible(true);
	}
	
}

class SwingDialog_1 extends JDialog
{
public SwingDialog_1(JFrame parent) {
	// TODO Auto-generated constructor stub
	super(parent,true);// 부모창과 모달창 여부 
	setBounds(300,300,250,120);
	setTitle("project Info");
	
	setVisible(true);
	setModal(false);
	setModalityType(DEFAULT_MODALITY_TYPE);
}
}